package com.cn.wanxi.model;

import java.util.List;

public class ResultModel {
    private Integer code;//状态嘛，200标示访问成功，404标示不存在，
    private String msg;//自定义字符  消息
    private Integer count;//一般用于存放条数，查询了多少条，影响了多少条等
    private Object data;//存放数据：字符，数组，对象，集合等

    private static ResultModel resultModel;

    private ResultModel() {
    }

    /**
     * 根据消息不同返回不同的结果集
     * 在什么情况下，我们的对象只会创建一次
     * static的情况下
     * 我们想要永远创建一个对象，怎么办呢？单例模式（设计模式）
     * 设计模式的六大原则----------
     * 单例模式最主要的是两点：
     * 1.必须先声明一个对象
     * 2.必须是私有的构造方法
     * ---------------------
     * 既然是单例模式，就不能给外部去创建对象
     *
     * @param msg
     * @return
     */
    public static ResultModel getModel(String msg) {
        if (resultModel == null) {
            resultModel = new ResultModel();
        }
        resultModel.setMsg(msg);
        return resultModel;
    }

    /**
     * 通过传递一个集合得到一个返回结果对象
     *
     * @param data
     * @return
     */
    public static ResultModel getModel(Object data) {
        if (resultModel == null) {
            resultModel = new ResultModel();
        }
        resultModel.setData(data);
        return resultModel;
    }

    /**
     * 将总条数和数据都存入Model
     *
     * @param data
     * @param count
     * @return
     */
    public static ResultModel getModel(Object data, int count) {
        if (resultModel == null) {
            resultModel = new ResultModel();
        }
        resultModel.setData(data);
        resultModel.setCount(count);
        resultModel.setCode(0);
        return resultModel;
    }

    /**
     * 将影响的条数放入model
     *
     * @param count
     * @return
     */
    public static ResultModel getModel(int count) {
        if (resultModel == null) {
            resultModel = new ResultModel();
        }
        resultModel.setCount(count);
        return resultModel;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}
